import numpy as nump

#EJERCICIO 1---------------------------------------------------------

raices = 0

intervalo_inicial = -2.
intervalo_final = 4.
espaciado = 21      # +1 de lo deseado

diferencia = ((intervalo_final-intervalo_inicial)/espaciado)

def function(x):
    return x**2-3*x + nump.e**x -2

x = nump.linspace(intervalo_inicial, intervalo_final, espaciado)
"""
for i in x:
    if function(i)*function(i+diferencia) <= 0:
        raices += 1
        print(f"En el intervalo ({i}, {i + diferencia}) hay un cero")
    else:
        pass


print(f"\nHay {raices} ceros")
"""
#EJERCICIO 2---------------------------------------------------------
precision = 0.1

for i in x:
    if function(i)*function(i+diferencia) <= 0:
        raices += 1
        print(f"En el intervalo ({i}, {i + diferencia}) hay un cero")
        
        punto_medio = (2*i+diferencia)/2
        
        while function(punto_medio)>precision:
            if function(punto_medio)*function(i)>0:
                    punto_medio = (punto_medio+i+diferencia)/2
            else:
                    punto_medio = (punto_medio+i)/2
        print(f"Raiz: {function(punto_medio)}")
                
            
    else:
        pass
    
print(f"\nHay {raices} ceros")